"""Commnand line tool"""

import subprocess

from loguru import logger


def run_command_in_dir(command: str, directory: str, debug: bool = True):
    """
    在指定目录下执行命令并返回控制台输出

    :param command: 要执行的命令
    :param directory: 执行命令的目录路径
    :return: 命令的输出结果
    """

    ret = None

    # 使用 subprocess.run 执行命令并捕获输出
    try:
        result = subprocess.run(
            command,
            shell=True,
            cwd=directory,
            text=True,
            capture_output=True,
            check=True,
        )
        # 返回命令的输出结果
        ret = result.stdout + result.stderr
    except subprocess.CalledProcessError as e:
        logger.error(
            f"在目录 {directory} 下执行命令({command})失败, 错误信息: {str(e)}"
        )
        ret = e.stdout + e.stderr

    if debug:
        logger.debug(
            f"在目录 {directory} 下执行命令({command})的输出结果: {ret if ret else '无'}"
        )

    return ret
